﻿using System;
using Persistence = Entersoft.Data.DotNetDAL.SQL.Persistence;

namespace BLL
{
    public class Carga: Common
    {
        public static bool ExisteReporteCargaInicial(string Periodo)
        {
            var retorno = false;

            var rp = new Entersoft.Data.DotNetResponse.SQL.Persistence();

            rp.ClearParametro();

            using (var objConn = new Persistence (false, ConnDB))
            {
                objConn.ExecuteScalar(ref rp, string.Format("SELECT dbo.fn_ExisteRptCarga('{0}')", Periodo));

                if (!rp.TieneErrores)
                    retorno = rp.GetScalar.ToString().ToLower().Equals("true");
            }

            rp.Dispose();

            return retorno;
        }

        public bool CargaArchivoSAP(string Periodo, string NombreArchivo)
        {
            return CargaArchivoSAP(Periodo, NombreArchivo, "SP_INS_CARGA_MAESTROSAP");
        }

        public bool CargaArchivoSAP_PI(string Periodo, string NombreArchivo) // Carga Archivo SAP Post Inventario --> SP_INS_CARGA_MAESTROSAP_FINAL
        {
            return CargaArchivoSAP(Periodo, NombreArchivo, "SP_INS_CARGA_MAESTROSAP_FINAL");
        }

        public bool CargaArchivoSAP(string Periodo, string NombreArchivo, string storedProcedure)
        {
            bool retorno;

            var rp = new Entersoft.Data.DotNetResponse.SQL.Persistence();

            rp.AddParametro(Periodo);
            rp.AddParametro(NombreArchivo);

            rp.StoredProcedure = storedProcedure; 

            using (var obj = new Persistence(true, ConnDB))
            {
                obj.ExecuteDataTable(ref rp);

                if (!rp.TieneErrores)
                {
                     retorno = Convert.ToInt16(rp.DataTable.Rows[0]["RETORNO"]).Equals(0);
                     Mensaje = rp.DataTable.Rows[0]["MENSAJE"].ToString();

                     obj.Commit();
                }
                else
                {
                    retorno = false;
                    Mensaje = rp.Errores;
                }

            }

            return retorno;
        }


        public bool AprobarCargaArchivo(string Periodo)
        {
            bool vRetorno;

            var rp = new Entersoft.Data.DotNetResponse.SQL.Persistence();

            rp.AddParametro(Periodo);
            rp.AddParametro(-99);
            rp.AddParametro("");

            rp.StoredProcedure = "sp_upd_EstadoVigentePeriodo";

            using (var objConn = new Persistence(true, ConnDB))
            {
                objConn.ExecuteNonQuery(ref rp);

                vRetorno = Convert.ToInt32(rp.Parametro[1]) == 0;
                Mensaje = rp.Parametro[2].ToString();

                if (vRetorno)
                    objConn.Commit();
            }

            rp.Dispose();

            return vRetorno;
        }
    }
}
